<?php

declare(strict_types=1);

namespace app\common\model\User;

// 引用地区模型
use app\common\model\Region;
// use app\common\model\Config as ConfigModel;
use think\Model;
use think\facade\Config;

// 软删除
use think\model\concern\SoftDelete;

/**
 * 用户表
 */
class User extends Model
{
    // 调用
    use SoftDelete;

    // 指定的数据表
    protected $table = 'pre_user';

    // 自动写入时间
    protected $autoWriteTimestamp = true;

    // 注册时间
    protected $createTime = 'createtime';

    // 更新时间
    protected $updateTime = false;

    // 软删除字段
    protected $deleteTime = 'deletetime';

    // 追加字段
    protected $append = [
        'sex_text', //性别
        'cover_cdn',  //封面获取器
        //getAvatarCdnAttr
        'avatar_cdn',  //头像获取器 //
        'region_text', //地区字符
    ];

    // 定义获取地区的获取器
    public function getRegionTextAttr($value,$data)
    {
        // 定义一个空的数组,存放数据
        $RegionList = [];

        if(!empty($data['province']))
        {
            $RegionList[] = Region::where(['code' => $data['province']])->value('name');
        }

        if(!empty($data['city']))
        {
            $RegionList[] = Region::where(['code' => $data['city']])->value('name');
        }

        if(!empty($data['district']))
        {
            $RegionList[] = Region::where(['code' => $data['district']])->value('name');
        }

        if (empty($RegionList)) {
            return '';
        }

        return implode('-', $RegionList);
    }

    // 图片字段的验证器  avatar_cdn
    // 1 参数1：所关联的字段的值 undefined
    // 2 参数2：代表查询结果的  整一条记录
    public function getAvatarCdnAttr($value, $data)
    {

        $avatar = isset($data['avatar']) ? '/'.$data['avatar'] : '/static/home/res/images/avatar.jpg';

        //获取的是 config.php 当中 cdn选项
        $cdn = Config::get('app.cdn');

        // $url = ConfigModel::where(['key'=>'SiteUrl'])->value('value');
        // $url = empty($url) ? '' : trim($url);

        return $cdn . $avatar;
    }

    public function getCoverCdnAttr($value, $data)
    {
        $avatar = isset($data['cover']) ? '/'.$data['cover'] : '/static/home/res/images/back.jpg';

        //获取的是 config.php 当中 cdn选项 cdn 静态的资源域名
        $cdn =  Config::get('app.cdn');

        return $cdn . $avatar;
    }

    // 性别获取器
    public function getSexTextAttr($value,$data)
    {
        $sexList = [0 => '保密',1 => '男',2 => '女'];
        return $sexList[$data['sex']];
    }

    //给模型定义一个关联查询
    public function provinces()
    {
        /**
         * belongsTo('关联模型', '当前模型外键', '关联模型主键');
         *
         * 第一个参数
         * app\model\Category 关联的模型类名(分类表模型)
         *
         * 第二个参数
         * category_id 外键字段,默认的外键名规则是关联模型名+_id(文章表外键字段)
         *
         * 第三个参数
         * id 关联模型主键,默认是关联模型的 $pk 值(分类表主键字段)
         */

        return $this->belongsTo(\app\common\model\Region::class, 'province', 'code');
    }

    //查询城市
    public function citys()
    {
        return $this->belongsTo(\app\common\model\Region::class, 'city', 'code');
    }

    //查询地区
    public function districts()
    {
        return $this->belongsTo(\app\common\model\Region::class, 'district', 'code');
    }
}
